www.gusucode.com > vc++ 远程控制示例源程序-源码程序 > vc++ 远程控制示例源程序-源码程序\code\PeerYouS\PeerSystemInit.cpp
// PeerSystemInit.cpp: implementation of the PeerSystemInit // Download by http://www.NewXing.com ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "PeerSystemInit.h" #include "command.h" bool GetPeerSystemInfo(SYSTEMINIT& sysinfo) { /////get computer name/////// TCHAR computerbuf[256]; DWORD computersize=256; memset(computerbuf,0,256); if(!GetComputerName(computerbuf,&computersize)) return false; computerbuf[computersize]=0; sysinfo.computer[0]=0; strcat(sysinfo.computer,"计算机: "); strcat(sysinfo.computer,computerbuf); ///////get user name///////// TCHAR userbuf[256]; DWORD usersize=256; memset(userbuf,0,256); if(!GetUserName(userbuf,&usersize)) return false; userbuf[usersize]=0; sysinfo.user[0]=0; strcat(sysinfo.user,"用户名: "); strcat(sysinfo.user,userbuf); ///////get version////////// sysinfo.os[0]=0; strcat(sysinfo.os,"操作系统: "); OSVERSIONINFO osvi; memset(&osvi,0,sizeof(osvi)); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); if(!GetVersionEx(&osvi)) return false; switch (osvi.dwPlatformId) { case VER_PLATFORM_WIN32_NT: if ( osvi.dwMajorVersion <= 4 ) strcat(sysinfo.os,"Microsoft Windows NT "); if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 ) strcat(sysinfo.os,"Microsoft Windows 2000 "); HKEY hKey; char szProductType[80]; DWORD dwBufLen; RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\ProductOptions", 0, KEY_QUERY_VALUE, &hKey ); RegQueryValueEx( hKey, "ProductType", NULL, NULL, (LPBYTE)szProductType, &dwBufLen); RegCloseKey(hKey); if ( lstrcmpi( "WINNT", szProductType) == 0 ) strcat(sysinfo.os,"Professional, " ); if ( lstrcmpi( "LANMANNT", szProductType) == 0 ) strcat(sysinfo.os,"Server, " ); if ( lstrcmpi( "SERVERNT", szProductType) == 0 ) strcat(sysinfo.os,"Advanced Server, " ); if ( osvi.dwMajorVersion <= 4 ) { char temp[256]; sprintf(temp,"version %d.%d %s (Build %d)\n", osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.szCSDVersion, osvi.dwBuildNumber & 0xFFFF); strcat(sysinfo.os,temp); } else { char temp[256]; sprintf(temp,"%s (Build %d)\n", osvi.szCSDVersion, osvi.dwBuildNumber & 0xFFFF); strcat(sysinfo.os,temp); } break; case VER_PLATFORM_WIN32_WINDOWS: if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0) { strcat(sysinfo.os,"Microsoft Windows 95 "); if ( osvi.szCSDVersion[1] == 'C' || osvi.szCSDVersion[1] == 'B' ) strcat(sysinfo.os,"OSR2 " ); } if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10) { strcat(sysinfo.os,"Microsoft Windows 98 "); if ( osvi.szCSDVersion[1] == 'A' ) strcat(sysinfo.os,"SE " ); } if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90) { strcat(sysinfo.os,"Microsoft Windows Millennium Edition "); } break; } ///////////get disk space///////////// sysinfo.disk[0]=0; strcat(sysinfo.disk,"磁盘空间: "); DWORD maskdriver; ULONGLONG totalspace=0,freespace=0; ULONGLONG ulltotalspace,ullfreespace,freebyte; DWORD drivertype; char driver[10]; if(!(maskdriver=GetLogicalDrives())) return false; for(int i=0;i<26;i++) { if(!(maskdriver>>i)) break; if(maskdriver>>i&1) { driver[0]=i+'A'; driver[1]=':'; driver[2]='\\'; driver[3]=0; drivertype=GetDriveType(driver); if(drivertype!=DRIVE_FIXED) continue; if(!GetDiskFreeSpaceEx (driver, (PULARGE_INTEGER)&freebyte, (PULARGE_INTEGER)&ulltotalspace, (PULARGE_INTEGER)&ullfreespace)) return false; totalspace+=ulltotalspace; freespace+=ullfreespace; } } signed __int64 dfreespace=0.0,dtotalspace=0.0,lv; dfreespace=(signed __int64)freespace/(1024*1024*1024); dtotalspace=(signed __int64)totalspace/(1024*1024*1024); lv=(signed __int64)freespace/totalspace*100; char space[256]; sprintf(space,"总磁盘空间为:%.2fG,剩余磁盘空间为:%.2fG(占%.2f%c)",dtotalspace,dfreespace,lv,'%'); strcat(sysinfo.disk,space); ////////////////get cpu info////////////////// sysinfo.processor[0]=0; strcat(sysinfo.processor,"CPU: "); HKEY hKey; char szcpuinfo[80]; DWORD dwBufLen=80; RegOpenKeyEx( HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", 0, KEY_QUERY_VALUE, &hKey ); RegQueryValueEx( hKey, "VendorIdentifier", NULL, NULL, (LPBYTE)szcpuinfo, &dwBufLen); szcpuinfo[dwBufLen]=0; strcat(sysinfo.processor,szcpuinfo); strcat(sysinfo.processor," "); memset(szcpuinfo,0,80); dwBufLen=80; RegQueryValueEx( hKey, "Identifier", NULL, NULL, (LPBYTE)szcpuinfo, &dwBufLen); szcpuinfo[dwBufLen]=0; strcat(sysinfo.processor,szcpuinfo); DWORD f; dwBufLen=8; RegQueryValueEx( hKey, "~MHz", NULL, NULL, (LPBYTE)&f, &dwBufLen); char hz[10]; sprintf(hz," %dMHZ",f); strcat(sysinfo.processor,hz); RegCloseKey(hKey); /////////////get mem size//////////// MEMORYSTATUS ms; GlobalMemoryStatus(&ms); char membuf[256]; sprintf(membuf,"物理内存: 总物理内存:%dMB,可用内存:%dMB (占%.2f%s)",ms.dwTotalPhys/1024/1024,ms.dwAvailPhys/1024/1024 ,(double)ms.dwAvailPhys/ms.dwTotalPhys*100,"%"); sysinfo.mem[0]=0; strcpy(sysinfo.mem,membuf); return true; }